/**
* http://auzll.iteye.com/
*/
package com.gengweibo.web;
import java.io.IOException;
import java.util.Properties;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.sql.DataSource;
import com.gengweibo.dao.WeiboDao;
import com.gengweibo.dao.mysql.C3P0Provider;
import com.gengweibo.dao.mysql.WeiboDaoJdbcImpl;
import com.google.inject.Binder;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.google.inject.Singleton;
import com.google.inject.name.Names;
/**
* 初始化Guice Injector
*
* @author auzll@msn.com
* @since 2011-04-07
*/
public class GuiceInit extends HttpServlet {
private static final long serialVersionUID = 8466244375434657813L;
public void init(ServletConfig config) throws ServletException {
Injector injector = Guice.createInjector(new Module() {
public void configure(Binder binder) {
binder.bind(AccountAcction.class).in(Singleton.class);
binder.bind(WeiboDao.class).to(WeiboDaoJdbcImpl.class)
.in(Singleton.class);
binder.bind(DataSource.class).toProvider(C3P0Provider.class)
.in(Singleton.class);
Properties properties = new Properties();
try {
properties.load(Thread.currentThread()
.getContextClassLoader()
.getResourceAsStream("database.properties"));
} catch (IOException e) {
throw new ExceptionInInitializerError(e);
}
Names.bindProperties(binder, properties);
}
});
config.getServletContext().setAttribute(Injector.class.getName(),
injector);
}
}